package com.cyh.pangu.offer;

public class Offer17BigNum {

    StringBuilder res;

    int count = 0, n;

    char[] num, loop = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

    public String printNumbers(int n) {
        this.n = n;
        res = new StringBuilder(); // 数字字符串集
        num = new char[n]; // 定义长度为 n 的字符列表
        dfs(0); // 开启全排列递归
        res.deleteCharAt(res.length() - 1); // 删除最后多余的逗号
        return res.toString(); // 转化为字符串并返回
    }

    void dfs(int x) {
        if(x == n) { // 终止条件：已固定完所有位
            String add = String.valueOf(num);
            int len = add.length();// 取得字符串的长度
            int index = 0;// 预定义第一个非零字符串的位置

            char strs[] = add.toCharArray();// 将字符串转化成字符数组
            for (int i = 0; i < len; i++) {
                if ('0' == strs[i]) {
                    index++;// 找到非零字符串并跳出

                } else {
                  break;
                }
            }
            if (index > 0) {
                String strLast = add.substring(index, len);// 截取字符串
                if (strLast == null || strLast.trim().isEmpty()) {

                } else {
                    res.append(strLast + ","); // 拼接 num 并添加至 res 尾部，使用逗号隔开
                }
            } else {
                res.append(add + ","); // 拼接 num 并添加至 res 尾部，使用逗号隔开
            }

            return;
        }
        for(char i : loop) { // 遍历 ‘0‘ - ’9‘
            num[x] = i; // 固定第 x 位为 i
            dfs(x + 1); // 开启固定第 x + 1 位
        }
    }

    public static void main(String[] args) {
        Offer17BigNum offer17 = new Offer17BigNum();
        String result = offer17.printNumbers(3);
        System.out.println("result:" + result);
    }
}
